package co.inventario.modelo.fachada;

import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.entidad.PedidoVentaInsumoDTO;
import co.inventario.modelo.negocio.PedidoVentaInsumoNegocio;
import co.inventario.transversal.DAOFactorySQLServer;

public class PedidoVentaInsumoFachada {
	
	public void crear(PedidoVentaInsumoDTO pedidoVentaInsumoDTO) throws Exception {
		DAOFactorySQLServer daoFactorySQLServer = new DAOFactorySQLServer();
		PedidoVentaInsumoNegocio pedidoVentaInsumoNegocio = new PedidoVentaInsumoNegocio();
		try {
			pedidoVentaInsumoNegocio.crear(pedidoVentaInsumoDTO, daoFactorySQLServer.obtenerConexion());
			daoFactorySQLServer.confirmarTransaccion();
		} catch (SQLException exception) {
			daoFactorySQLServer.cancelarTransaccion();
			throw new Exception("Se ha presentado un problema intentando crear el pedido de venta del Insumo.");
		} catch (Exception exception) {
			daoFactorySQLServer.cancelarTransaccion();
			throw exception;
		} finally {
			daoFactorySQLServer.cerrarConexion();
		}
	}

	public void actualizar(PedidoVentaInsumoDTO pedidoVentaInsumoDTO) throws Exception {
		DAOFactorySQLServer daoFactorySQLServer = new DAOFactorySQLServer();
		PedidoVentaInsumoNegocio pedidoVentaInsumoNegocio = new PedidoVentaInsumoNegocio();
		try {
			pedidoVentaInsumoNegocio.actualizar(pedidoVentaInsumoDTO, daoFactorySQLServer.obtenerConexion());
			daoFactorySQLServer.confirmarTransaccion();
		} catch (SQLException sqlException) {
			daoFactorySQLServer.cancelarTransaccion();
			throw new Exception("Se ha presentado un problema intentando actualizar el pedido de venta del Insumo.");
		} catch (Exception exception) {
			daoFactorySQLServer.cancelarTransaccion();
			throw exception;
		} finally {
			daoFactorySQLServer.cerrarConexion();
		}
	}

	public ArrayList<PedidoVentaInsumoDTO> consultarTodo() throws Exception {
		DAOFactorySQLServer daoFactorySQLServer = new DAOFactorySQLServer();
		PedidoVentaInsumoNegocio pedidoVentaInsumoNegocio = new PedidoVentaInsumoNegocio();
		ArrayList<PedidoVentaInsumoDTO> pedidoVentaInsumoDTOLista = null;
		try {
			pedidoVentaInsumoDTOLista = pedidoVentaInsumoNegocio.consultarTodo(daoFactorySQLServer.obtenerConexion());
		} catch (SQLException exception) {
			throw new Exception("Se ha presentado un problema intentando consultar los pedidos de ventas de los Insumos.");
		} catch (Exception exception) {
			throw exception;
		} finally {
			daoFactorySQLServer.cerrarConexion();
		}
		return pedidoVentaInsumoDTOLista;
	}
}

